home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
010
/
world.bas
< prev
next >
Wrap
BASIC Source File
|
1988-11-09
|
9KB
|
229 lines
5 KEY OFF
10 LN=0 :W=3 :S$=" SECTOR ":SX$="="
15 WIDTH 40 :NC=10: ND=5: NS=4
20 DIM A(NC,10),C(NC,10),N$(NC),D$(ND),L$(NS)
30 DIM TA(5),TC(5),DA(5,5),DC(5,5),XX(5)
40 DATA "N.AMERICA","AUSTRALIA","S.AMERICA","RUSSIA","JAPAN","AFRICA"
50 DATA "KOREA","CHINA","GREENLAND","ENGLAND"
60 DATA "TROOPS","PLANES","ARTILLARY","TANKS","MISSLES"
70 DATA "NORTH","SOUTH","EAST","WEST"
80 FOR X=1 TO NC : READ N$(X) : NEXT X
90 FOR I= 1 TO ND: READ D$(I) : NEXT I
100 FOR I= 1 TO NS:READ L$(I) : NEXT I
101 DATA .9,200,75,100,0
102 DATA .001,1.1,.01,.01,.5
103 DATA .01,1.1,.01,.01,.5
104 DATA .005,3,1,1.1,2
105 DATA .001,1,.25,.3,1
106 FOR IA=1 TO 5
107 FOR ID=1 TO 5
108 READ WT(IA,ID)
109 NEXT ID
110 NEXT IA
119 REM=======================================================================
120 REM INITIALIZE VALUES
130 REM=======================================================================
135 X=VAL(RIGHT$(TIME$,1)): RANDOMIZE X
140 FOR I=1 TO NC: C(I,1)=INT(5000*RND)*10: NEXT I
150 FOR I=1 TO NC
160 FOR J=2 TO ND: C(I,J)=25+INT(50*RND): NEXT J
170 NEXT I
180 FOR I=1 TO NC
190 FOR X=6 TO 10 : C(I,X)=INT(4*RND)+1 :NEXT X
200 NEXT I
210 FOR X=1 TO 5
220 FOR J=1 TO 10
230 A(X,J)=C(X,J) : C(X,J)=0
240 NEXT J
250 NEXT X
260 REM====================================================================
270 REM START GAME
280 REM====================================================================
290 COLOR 0,7 : CLS:PRINT "WORLD CONQUEST GAME"
300 PRINT "COPYRIGHT 6/1/82":PRINT "BY Dorn W. Stickle "
301 PRINT STRING$(40,SX$)
310 FOR I=1 TO 3000: NEXT I
320 Y6=Y6+1
330 REM--------------------------SELECT MANUEVER
340 SCREEN 1:COLOR 9,7:CLS:PRINT " AVAILABLE MANUEVERS
350 PRINT
360 PRINT
370 PRINT "1. DISPLAY ALLIES DEFENSE STATUS
380 PRINT "2. TRANSPORT DEFENSES
390 PRINT "3. REVIEW GLOBAL STATUS
400 PRINT "4. SPY MISSION
410 PRINT "5. ATTACK ANOTHER COUNTRY
420 PRINT
430 PRINT
440 PRINT
450 INPUT "MANUEVER ";M
460 IF M>5 OR M<1 THEN 340
470 ON M GOTO 1000,2000,3000,4000,5000
1000 REM=====================================================================
1010 REM DISPLAY COUNTRY STATUS
1020 REM=====================================================================
1030 CLS:COLOR 11,7:PRINT TAB(35);"LIST OF COUNTRIES":PRINT :PRINT :PRINT :PRINT
1040 FOR I= 1 TO 10
1050 PRINT " ";I,N$(I)
1060 NEXT I
1070 PRINT :PRINT :PRINT :INPUT "ENTER COUNTRY ";R
1080 IF R<1 OR R>10 THEN 1030
1085 CLS:PRINT "REVIEW OF ALLY DEFENSES IN ";N$(R):PRINT STRING$(39,"=")
1090 PRINT "DEFENSE";TAB(10);"QUANTITY";TAB(25);"LOCATION"
1100 PRINT STRING$(40,SX$)
1110 FOR X=1 TO 5
1120 PRINT D$(X);TAB(10);A(R,X);TAB(25);L$(A(R,X+5))+S$
1130 NEXT X
1140 PRINT :PRINT :INPUT "HIT ENTER TO CONTINUE ";Q$
1150 GOTO 330
2000 REM======================================================================
2010 REM TRANSPORT DEFENSES
2020 REM======================================================================
2030 CLS:COLOR 12,7:PRINT TAB(35);"LIST OF COUNTRIES":PRINT :PRINT :PRINT :PRINT
2040 FOR I=1 TO 10
2050 PRINT " ";I,N$(I)
2060 NEXT I
2070 PRINT :PRINT :PRINT :INPUT "ENTER COUNTRY ( FROM,TO )";F,T
2080 IF F<1 OR F>10 OR T<1 OR F>10 THEN 2030
2090 CLS:PRINT TAB(35);"LIST OF DEFENSES ":PRINT :PRINT :PRINT :PRINT
2100 FOR I=1 TO 5
2110 PRINT I,D$(I)
2120 NEXT I
2130 PRINT :PRINT :PRINT :PRINT :PRINT :PRINT
2140 INPUT "WHICH DEFENSE DO YOU WANT TO TRANSPORT ";D
2150 IF D<1 OR D>5 THEN 2090
2160 INPUT "QUANTITY TO TRANSPORT ";Q
2170 IF Q>A(F,D) THEN PRINT "YOU ONLY HAVE ";A(F,D);" IN ";N$(F):GOTO 2160
2180 A(T,D)=A(T,D)+Q :A(F,D)=A(F,D)-Q
2190 CLS:PRINT "WHICH SECTOR "
2200 FOR I= 1 TO 4 :PRINT I,L$(I) :NEXT I
2210 PRINT :PRINT :PRINT :INPUT L
2220 IF L<1 OR L>4 THEN 2190
2230 A(T,D+5)=L
2240 IF INT(RND*100)>25 THEN 2260
2250 GOSUB 7200
2260 PRINT :PRINT :PRINT :INPUT "HIT ENTER TO CONTINUE ";Q$ :GOTO 330
2270 REM=======================================================================
3000 REM GLOBAL REPORT
3010 REM=======================================================================
3020 CLS:COLOR 7,0:PRINT :PRINT :PRINT TAB(15);"GLOBAL REPORT"
3024 PRINT STRING$(40,"=")
3025 PRINT TAB(15);"TROOPS";TAB(30);"ALLIES "
3030 PRINT TAB(10);"ALLIES ";TAB(20);"ENEMY ";TAB(30)"POSSESSION"
3040 PRINT STRING$(40,"=")
3050 FOR I=1 TO 10
3060 PRINT N$(I);TAB(12);A(I,1);TAB(21);C(I,1);
3070 K2=0:FOR J=1 TO 5 : IF C(I,J)<>0 THEN K2=K2+1
3080 NEXT J
3090 IF K2=0 THEN PRINT TAB(33); "YES"
3091 IF K2<>0 THEN PRINT TAB(33);"NO"
3100 NEXT I
3110 PRINT :PRINT :PRINT :INPUT "HIT ENTER TO CONTINUE";Q$ :GOTO 330
3120 REM======================================================================
4000 REM SPY MISSION
4010 REM======================================================================
4020 CLS:COLOR 12,7:PRINT TAB(20) "SPY MISSION OVER ":PRINT :PRINT
4030 FOR I= 1 TO 10
4040 PRINT I,N$(I)
4050 NEXT I
4060 PRINT :PRINT :INPUT "WHICH COUNTRIES (FROM,TO) ";F,T
4070 IF A(F,2)<10 THEN PRINT "YOU DONT HAVE ENEOUGH PLANES IN ";N$(F): INPUT "HIT ENTER TO CONTINUE ";Q$ : GOTO 330
4080 REM----------------------------------------
4090 A(F,2)=A(F,2)-10
4100 CLS:PRINT :PRINT :PRINT TAB(20);"SPY MISSION REPORT OF " ;N$(T)
4110 PRINT STRING$(40,"=")
4120 IF INT(RND*100)<26 THEN PRINT "ALL PLANES LOST TO AIR DEFENSES OF ";N$(T):INPUT "HIT ENTER TO CONTINUE ";Q$:GOTO 330
4130 PRINT "DEFENSE","QUANTITY","LOCATION"
4140 PRINT STRING$(40,SX$)
4150 FOR X=1 TO 5
4160 XP=INT(RND*100)
4170 IF XP<30 THEN GOTO 4230
4180 PRINT D$(X),C(T,X);
4190 K1=X+5
4200 IF C(T,K1)=0 THEN 4230
4210 K2=C(T,K1)
4220 PRINT TAB(34);L$(K2)
4230 NEXT X
4240 PRINT :PRINT :PRINT :INPUT "HIT ENTER TO CONTINUE ";Q$:GOTO 330
4250 REM=======================================================================
5000 REM=======================================================================
5010 REM ATTACK ALGORITHMS
5020 REM=======================================================================
5030 REM ATTACKER: 1. TROOPS 2.PLANES 3.ARTILLARY 4.TANKS 5.MISSLES
5040 REM-----------------------------------------------------------------
5050 REM DEFENDER: ! ! ! ! !
5060 REM 1.TROOPS ! 0.9 ! 200 ! 75 ! 100 ! 0
5070 REM 2.PLANES ! .001 ! 1.1 ! .01 ! .01 ! .5
5080 REM 3.ARTILLARY ! .01 ! 5 ! 1 ! 1.3 ! 2
5090 REM 4.TANKS ! .005 ! 3 ! 1 ! 1.1 ! 2
5100 REM 5.MISSLES ! .001 ! 1 ! .25 ! .3 ! 1
5110 REM-----------------------------------------------------------------------
5220 REM-----------------------------------------------------------------------
5225 T1=0:T2=0
5230 FOR IC=1 TO 10
5240 FOR J=1 TO 5:IF A(IC,J)>0 THEN T1=1
5250 IF C(IC,J)>0 THEN T2=1
5260 NEXT J
5270 IF T1=0 OR T1=0 THEN
5280 FOR ID=1 TO 5: FOR IA=1 TO 5:DA(IA,ID)=0:DC(IA,ID)=0:NEXT IA:NEXT ID
5290 REM---------------------------------------------------------------------
5300 FOR ID=1 TO 5
5310 TA(ID)=0 :TC(ID)=0
5320 REM-------------------------------------------CALCULATE MAXIMUM CASUALTIES
5330 FOR IA=1 TO 5
5340 DA(ID,IA)=INT(WT(IA,ID)*RND*C(IC,IA))
5350 IF A(IC,ID)<=0 THEN DA(ID,IA)=0
5360 TA(ID)=TA(ID)+DA(ID,IA)
5370 DC(ID,IA)=INT(WT(IA,ID)*RND*A(IC,IA))
5380 IF C(IC,ID)<=0 THEN DC(ID,IA)=0
5390 TC(ID)=TC(ID)+DC(ID,IA)
5400 REM----------------------------------RESTRICT CASUALTIES TO EXISTING #S
5410 IF TA(ID)>=A(IC,ID) THEN TA(ID)=A(IC,ID)
5420 IF TC(ID)>=C(IC,ID) THEN TC(ID)=C(IC,ID)
5430 LA(IC,ID)=TA(ID): LC(IC,ID)=TC(ID)
5440 NEXT IA
5450 NEXT ID
5460 REM-----------------------------------PRINT LOSSES
5465 IX=IC+2
5466 IF IX=7 THEN IX=2
5470 COLOR IX,7:CLS
5480 PRINT "BATTLE FOUGHT IN ";N$(IC)
5490 PRINT STRING$(40,"=")
5500 PRINT"ALLIES CASUALTIES:"
5520 PRINT TAB(10) ;"PREVIOUS LOSSES PRESENT"
5530 PRINT STRING$(39,"-")
5535 SUMX=0
5540 FOR ID=1 TO 5
5550 X=A(IC,ID) :A(IC,ID)=X-LA(IC,ID)
5560 PRINT D$(ID);TAB(10);X;TAB(20);LA(IC,ID);TAB(30);A(IC,ID)
5564 SUMX=SUMX+LA(IC,ID)
5565 NEXT ID
5570 PRINT STRING$(40,"=")
5580 PRINT :PRINT"ENEMY CASUALTIES:"
5600 PRINT TAB(10) ;"PREVIOUS LOSSES PRESENT"
5610 PRINT STRING$(39,"-")
5620 FOR ID=1 TO 5
5630 X=C(IC,ID) :C(IC,ID)=X-LC(IC,ID)
5635 SUMX=SUMX+LC(IC,ID)
5640 PRINT D$(ID);TAB(10);X;TAB(20);LC(IC,ID);TAB(30);C(IC,ID)
5645 NEXT ID
5646 IF IC<>10 THEN 5650
5647 FOR J=1 TO 1800:NEXT J
5650 IF SUMX=0 THEN 5660
5658 INPUT "HIT ENTER TO CONTINUE ";Q$
5660 NEXT IC
5670 GOTO 330
7200 REM-----------------------------------------TRANSPORT LOSS SUBROUTINE
7210 R=INT(100*RND(RX))+1
7220 X2=INT(RND(RX)*10)+2
7230 IF D=1 THEN X2=INT(100*RND(RX))+2
7240 IF A(T,D)<=X2 THEN X2=A(T,D)
7250 A(T,D)=A(T,D)-X2
7260 IF R<33 THEN PRINT "GURELLA FORCE ATTACK ON THE ";L$(A(T,D+5))+S$:GOTO 7290
7270 IF R<66 THEN PRINT "TRANSPORT SHIP SUNK AT SEA ":GOTO 7290
7280 PRINT "AMBUSH DURING TRANSPORT "
7290 PRINT " YOU JUST LOST ";X2;D$(D)
7300 PRINT " TOTAL ARRIVED IN ";N$(T); " = ";A(T,D)
7310 RETURN
7380 REM=====================================================================